home *** CD-ROM | disk | FTP | other *** search
- INCLUDE 'blitz.i'
- INCLUDE 'lib/exec.i'
- INCLUDE 'lib/dos.i'
- INCLUDE 'exec/execbase.i'
- INCLUDE 'dos/dosextens.i'
- INCLUDE 'workbench/startup.i'
-
- libheader 208,Init,0,Exit,LibErrs
-
- acommand long
- args
- libs
- subs _wbmessage,0,0
- name 'wbmessage','- Returns location of WBStartup message'
-
- afunction long
- args
- libs
- subs _WBArgs,0,0
- name 'WBArgs','- Returns the number of arguments passed by the Workbench'
-
- afunction string
- args long
- libs doslib,la6
- subs _wArg,0,0
- name 'wArg','(Num) - Used to get WB args'
-
- acommand long
- args unknown
- libs doslib,la6
- subs _ReadArgs,0,0
- name 'ReadArgs','(Template) - Used to parse CLI args'
-
- afunction long
- args long
- libs
- subs _cArg,0,0
- name 'cArg','(Num) - Used to get CLI args'
-
- Init: nullsub LibInit,0,0, execlib,la6
- Exit: nullsub LibExit,0,0, execlib,la6, doslib,ld6
-
- libfin
-
- _wbmessage:
- MOVE.L WBMsg(pc),d0
- RTS
-
- _WBArgs:
- MOVE.L WBMsg(pc),d1
- BEQ Oops
- MOVEA.L d1,a0
- MOVE.L sm_NumArgs(a0),d0
- RTS
-
- _wArg:
- MOVE.L WBMsg(pc),d1
- BEQ Oops
- MOVEA.L d1,a0
- MOVEA.L sm_ArgList(a0),a0
- 1$ MOVE.L wa_Lock(a0),d5
- MOVE.L wa_Name(a0),d6
- ADDQ.L #8,a0
- DBRA d0,1$
-
- MOVE.L d5,d1
- BEQ Oops
- MOVE.L a3,d2
- MOVE.L #$FF,d3
- Call NameFromLock
-
- MOVE.L a3,-(sp)
- 2$ TST.B (a3)+
- BNE 2$
- SUBQ.L #1,a3
-
- CMPI.B #":",-1(a3)
- BEQ nd$ ; wArg_NoDir
- MOVE.B #"/",(a3)+
-
- nd$ TST.L d6
- BEQ nn$
- MOVEA.L d6,a0
- 3$ MOVE.B (a0)+,(a3)+
- BNE 3$
-
- SUBQ.L #1,a3
- nn$ MOVE.L a3,d0 ; wArg_NoName
- SUB.L (sp)+,d0
- RTS
-
- _ReadArgs:
- MOVE.L ArgArray(pc),d2
- MOVE.L d0,d1
- MOVEQ #0,d3
- Call ReadArgs
- MOVE.L d0,CLIArg
- RTS
-
- _cArg:
- MOVEA.L ArgArray(pc),a0
- MULU.W #4,d0
- MOVE.L 0(a0,d0.w),d0
- RTS
-
- Oops:
- MOVEQ #0,d0
- RTS
-
- LibInit:
- MOVEA.L ThisTask(a6),a2
- TST.L pr_CLI(a2)
- BNE 1$ ; FromCli
- ; LEA 092(a2),a0
- ; JSR LVOWaitPort(a6)
- LEA pr_MsgPort(a2),a0
- Call GetMsg
- MOVE.L d0,WBMsg
- RTS
-
- 1$ BAllocMem #256,#$10000,ArgArray
- RTS
-
- LibExit:
- MOVE.L WBMsg(pc),d0
- BEQ CLI$
- MOVEA.L d0,a1
- Call Forbid
- Call ReplyMsg
- RTS
- CLI$ MOVE.L CLIArg(pc),d1
- MOVE.L a6,-(sp)
- MOVEA.L d6,a6
- Call FreeArgs
- MOVEA.L (sp)+,a6
- RTS
-
- WBMsg Dc.l 0
- CLIArg Dc.l 0
- ArgArray Dc.l 0
-
- LibErrs
- Dc.b "$VER: Lotan's Args Library 0.2 (19.05.99)",0
- Even
-